﻿<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../helpproject.xsl" ?>
<topic template="Default" lasteditedby="Geert" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../helpproject.xsd">
  <title translate="true">What are all the projects for?</title>
  <keywords>
    <keyword translate="true">FAQ</keyword>
    <keyword translate="true">Projects</keyword>
  </keywords>
  <body>
    <header>
      <para styleclass="Heading1"><text styleclass="Heading1" translate="true">What are all the projects for?</text></para>
    </header>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">The Catel solution contains a lot of projects. This page will explain the meaning of each project and how the solution is set up in general.</text></para>
    <para styleclass="Heading1"><text styleclass="Heading1" translate="true">Solution setup</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">The root of Catel follows a frequently used directory layout:</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">deployment</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">Catel is available on NuGet. This folder contains all the NuGet assemblies for all versions (including the older Catel versions) and the NuGet scripts.</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">design</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">Contains the design items required for Catel. For example, this folder contains the logo of Catel in several formats.</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">doc</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">Contains the documentation and all text files will explanations about Catel.</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">lib</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">Contains all the external libraries used by Catel. The libraries are sorted by target framework (thus NET35, NET40, SL4, SL5, WP7, etc).</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">output</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">This folder will be created as soon as you make a build. All project outputs are written to this folder. The folders are sorted by configuration (Debug or Release), and are sorted by target framework (thus NET35, NET40, SL4, SL5, WP7, etc). Keep in mind that the different configurations (Any CPU, x86 and x64 are not written to a separate folder (this would create &quot;folder hell&quot;)).</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">snippets</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">Contains all the code snippets available for Catel.</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">src</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">Contains the actual source code.</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">templates</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">Contains all the item- and project templates available for Catel</text></para>
    <para styleclass="Heading1"><text styleclass="Heading1" translate="true">Projects</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">When you open the solution of Catel, you see a lot of folders and projects. The solution folders should speak for itself, they are named very descriptive (for example, the folder &quot;Code snippets&quot; contains the &quot;Code snippets&quot;). The most important folder to discuss here is the Src (source) folder. It contains the following 4 subfolders:</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">Articles</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">Contains all the code written for articles. You can play a bit with the code, or simply learn from it or use it in your projects.</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">Silverlight</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">The Silverlight folder has a few subfolders. It contains folders with Silverlight specific examples, test projects and of course the actual Silverlight libraries.</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">Windows</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">The Windows folder has a few subfolders. It contains folders with Core and WPF specific examples, test projects and of course the actual Core and Windows libraries.</text></para>
    <para styleclass="Normal"><text styleclass="Normal" style="font-weight:bold;" translate="true">WP7</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">The WP7 folder has a few subfolders. It contains folders with WP7 specific examples, test projects and of course the actual WP7 libraries.</text></para>
    <para styleclass="Heading1"><text styleclass="Heading1" translate="true">Linking of files</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">A lot of files are shared between projects. Therefore, it might be a little confusing for people that are not used to this kind of usages of projects in Visual Studio. The core files for all libraries are initially in the Core35 and Windows35 projects. All other libraries simply link to these files so the behavior is consistent. Only when a customer target framework requires target framework specific code (such as Silverlight or Windows Phone 7), the code is added to that project.</text></para>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">If there are several versions of the same target framework supported, then the general rule is that the actual files are located in the lowest version. As an example, if Silverlight requires a Silverlight specific implementation of a class, the file will be included in the SL4 project (of course only if it&apos;s not a SL5 specific feature). Then, the SL5 library will simply link to this file.</text></para>
  </body>
</topic>
